<template>
    <div>
        <h4>路由守卫</h4>
        <p>路由守卫的统一参数</p>
        <ul>
            <li>to:记录路由切换时将要访问的路由信息对象</li>
            <li>from:记录路由切换时将要离开的路由信息对象</li>
            <!-- <li>
                next:路由切换行为控制方法【终止或放行路由切换】 <br>
                当守卫方法为接收该参数时，默认守卫为放行状态；一旦接收该参数且不对next方法进行调用描述，守卫方法处于终止状态 <br>
                放行状态：路由切换时属于正常的切换流程 <br>
                终止状态：路由切换时将被停止切换行为和相关操作 <br>
                例如 路由A->路由B 进行切换，如果未接收next可以正常切换，页面显示B；如果接收next且没完成next方法执行，路由切换停止页面依然显示A 
            </li> -->
        </ul>
        <p>根据定义方式进行分类</p>
        <ul>
            <li>组件内定义守卫【只是针对对应的路由组件有效，所该类型守卫直接定义在对应的组件中】</li>
            <li>
                全局定义守卫【在路由createRouter方法调用文件中】
                <ul>
                    <li>全局作用守卫 = 对createRouter创建的路由对象进行整体定义的守卫 = 会将守卫功能应用于所有路由组件</li>
                    <li>路由独享守卫 = 根据需要针对某个路由表配置的路由组件，进行的守卫配置 = 守卫功能只对定义的路由组件有效</li>
                </ul>
            </li>
        </ul>
        <p>根据路由守卫功能分类</p>
        <ul>
            <li>
                路由进入前守卫【组件内、全局下、独享】<br>
                该守卫时在将要访问的路由组件被创建之前就会执行的回调方法 <br>
                组件授权访问拦截 = 当某个路由组件为登录后授权才可访问的组件，通过该守卫可以控制访问切换的需求 <br>
            </li>
            <li>路由解析前守卫【全局下】</li>
            <li>
                路由更新前守卫【组件内】<br>
                选项式属性: beforeRouteUpdate(to,from,next){} => 路由缓存触发时，参数变化才会调用，监控参数变化 => 守卫方法内this为当前实例对象<br>

            </li>
            <li>
                路由离开前守卫【组件内、全局下】<br>
                路由切换时，离开路由组件被销毁前执行功能方法 <br>
                离开守卫常备用于，切换参数验证，表单数据的提交切换, 放弃支付(放弃操作)
            </li>
        </ul>
        <RouterLink :to="{ name:'gone',query:{a:1} }">路由守卫测试1</RouterLink>
        <br>
        <RouterLink :to="{ name:'gone',query:{a:2} }">路由守卫测试2</RouterLink>
        <br>
        <RouterView></RouterView>
    </div>
</template>

<script>
export default {
   
}
</script>

<style lang="scss" scoped>

</style>